package io.easyspring.common.generator.config;

import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import io.easyspring.common.generator.support.FileOutParameter;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 生成器输出路径及生成模板的配置类
 *
 * @author summer
 * @version V1.0.0-RELEASE
 * DateTime 2019-05-11 18:56
 */
public class GeneratorFileOutConfig {

    /**
     * 根据传入的文件输出参数, 生成文件输出的配置集合
     *
     * @param fileOutParameterList 文件输出参数集合
     * @return java.util.List<com.baomidou.mybatisplus.generator.config.FileOutConfig>
     * Author summer
     * Version V1.0.0-RELEASE
     * DateTime 2019-05-11 19:07
     */
    public static List<FileOutConfig> fileOutConfig(List<FileOutParameter> fileOutParameterList) {
        return fileOutParameterList.stream()
                .filter(Objects::nonNull)
                .map(GeneratorFileOutConfig::buildFileOutConfig)
                .collect(Collectors.toList());


    }

    /**
     * 生成单个文件配置类的方法
     *
     * @param fileOutParameter 文件输出参数
     * @return com.baomidou.mybatisplus.generator.config.FileOutConfig
     * Author summer
     * Version V1.0.0-RELEASE
     * DateTime 2019-05-11 19:07
     */
    private static FileOutConfig buildFileOutConfig(FileOutParameter fileOutParameter) {
        return new FileOutConfig(fileOutParameter.getTemplate()) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return fileOutParameter.getOutputDir() + "/"
                        + tableInfo.getEntityName() + fileOutParameter.getFileSuffix();
            }
        };
    }
}
